package Day12;


import java.util.ArrayList;
import java.util.Iterator;

/**
 * @author hyhWTX
 * @version 1.0
 * @date 2022年05月16日 13:42
 */


public class Test01 {
    public static void main(String[] args) {
//        show01();
        show02();

    }
    /**
     *创建一个集合对象，不使用泛型
     * 好处：
     *      集合不使用泛型，默认的类型是object类型，可以存储任意类型的数据
     * 弊端：
     *      不安全，会引发异常.
     */

    /*public static  void show01(){
        ArrayList list = new ArrayList();
        list.add("abc");
        list.add(1);

        //使用迭代器遍历list集合
        //获取迭代器
        Iterator it = list.iterator();
        //使用迭代器中的方法hasNext和next遍历集合
        while (it.hasNext()){
            //取出元素也是object类型
            Object obj = it.next();
            System.out.println(obj);

            //使用String类特有的方法，.length获取字符串的长度，不能使用多态 object obj = "abc";
            //需要向下转型
            //出现字符转换异常ClassCastException,不能将Integer类型转换成为String类型

            String s =  (String)obj;
            System.out.println(s.length());
        }

    }*/

    /**
     *创建一个集合对象，使用泛型
     * 好处：
     *      1.避免了类型转换的麻烦,存储的是什么类型就是什么类型，取出的就是什么类型
     *      2.把运行期异常（代码运行之后会抛出的异常），提升到了编译器（写代码的时候会报错）
     * 弊端：
     *      泛型是什么类型，就只能存储什么类型的数据
     */
    public  static void show02(){
        ArrayList<String> list = new ArrayList<>();
        list.add("abc");
//        list.add(1);

        //使用迭代器遍历list集合
        //获取迭代器
        Iterator<String> It = list.iterator();
        while (It.hasNext()){
            String s = It.next();
            System.out.println(s+"---->"+s.length());
        }
    }
}
